package demoMod.stsconsole.interfaces;

import demoMod.stsconsole.helpers.RandomSequence;

/**
 * 所有可以出售的实体
 */
public interface Saleable {
    /**
     * 计算最终价格
     */
    void calculatePrice(RandomSequence rng);

    /**
     * 基础价格
     * @return 商品的基础价格
     */
    int getBasePrice();

    /**
     * 最终价格，只有在调用过calculatePrice方法后才能保证返回正确的结果
     * @see #calculatePrice(RandomSequence)
     * @return 最终价格，应该是经过随机浮动、打折等计算后得出的价格
     */
    int getPrice();

    /**
     * 成功购买此商品后的逻辑，在调用此方法之前应该要实现判断是否能成功购买等逻辑
     */
    void purchase();
}
